/* Copyright (C) 2007-2010 STS Soft

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; version 2 of the License.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */


namespace STSdb.Data
{
    public class XKey<TSubKey0, TSubKey1>
    {
        public readonly TSubKey0 SubKey0;
        public readonly TSubKey1 SubKey1;

        public XKey(TSubKey0 subKey0, TSubKey1 subKey1)
        {
            SubKey0 = subKey0;
            SubKey1 = subKey1;
        }

        public override string ToString()
        {
            return string.Format("[{0}, {1}]", SubKey0, SubKey1);
        }
    }

    public class XKey<TSubKey0, TSubKey1, TSubKey2>
    {
        public readonly TSubKey0 SubKey0;
        public readonly TSubKey1 SubKey1;
        public readonly TSubKey2 SubKey2;

        public XKey(TSubKey0 subKey0, TSubKey1 subKey1, TSubKey2 subKey2)
        {
            SubKey0 = subKey0;
            SubKey1 = subKey1;
            SubKey2 = subKey2;
        }

        public override string ToString()
        {
            return string.Format("[{0}, {1}, {2}]", SubKey0, SubKey1, SubKey2);
        }
    }

    public class XKey<TSubKey0, TSubKey1, TSubKey2, TSubKey3>
    {
        public readonly TSubKey0 SubKey0;
        public readonly TSubKey1 SubKey1;
        public readonly TSubKey2 SubKey2;
        public readonly TSubKey3 SubKey3;

        public XKey(TSubKey0 subKey0, TSubKey1 subKey1, TSubKey2 subKey2, TSubKey3 subKey3)
        {
            SubKey0 = subKey0;
            SubKey1 = subKey1;
            SubKey2 = subKey2;
            SubKey3 = subKey3;
        }

        public override string ToString()
        {
            return string.Format("[{0}, {1}, {2}, {3}]", SubKey0, SubKey1, SubKey2, SubKey3);
        }
    }

    public class XKey<TSubKey0, TSubKey1, TSubKey2, TSubKey3, TSubKey4>
    {
        public readonly TSubKey0 SubKey0;
        public readonly TSubKey1 SubKey1;
        public readonly TSubKey2 SubKey2;
        public readonly TSubKey3 SubKey3;
        public readonly TSubKey4 SubKey4;

        public XKey(TSubKey0 subKey0, TSubKey1 subKey1, TSubKey2 subKey2, TSubKey3 subKey3, TSubKey4 subKey4)
        {
            SubKey0 = subKey0;
            SubKey1 = subKey1;
            SubKey2 = subKey2;
            SubKey3 = subKey3;
            SubKey4 = subKey4;
        }

        public override string ToString()
        {
            return string.Format("[{0}, {1}, {2}, {3}, {4}]", SubKey0, SubKey1, SubKey2, SubKey3, SubKey4);
        }
    }

    public class XKey<TSubKey0, TSubKey1, TSubKey2, TSubKey3, TSubKey4, TSubKey5>
    {
        public readonly TSubKey0 SubKey0;
        public readonly TSubKey1 SubKey1;
        public readonly TSubKey2 SubKey2;
        public readonly TSubKey3 SubKey3;
        public readonly TSubKey4 SubKey4;
        public readonly TSubKey5 SubKey5;

        public XKey(TSubKey0 subKey0, TSubKey1 subKey1, TSubKey2 subKey2, TSubKey3 subKey3, TSubKey4 subKey4, TSubKey5 subKey5)
        {
            SubKey0 = subKey0;
            SubKey1 = subKey1;
            SubKey2 = subKey2;
            SubKey3 = subKey3;
            SubKey4 = subKey4;
            SubKey5 = subKey5;
        }

        public override string ToString()
        {
            return string.Format("[{0}, {1}, {2}, {3}, {4}, {5}]", SubKey0, SubKey1, SubKey2, SubKey3, SubKey4, SubKey5);
        }
    }

    public class XKey<TSubKey0, TSubKey1, TSubKey2, TSubKey3, TSubKey4, TSubKey5, TSubKey6>
    {
        public readonly TSubKey0 SubKey0;
        public readonly TSubKey1 SubKey1;
        public readonly TSubKey2 SubKey2;
        public readonly TSubKey3 SubKey3;
        public readonly TSubKey4 SubKey4;
        public readonly TSubKey5 SubKey5;
        public readonly TSubKey6 SubKey6;

        public XKey(TSubKey0 subKey0, TSubKey1 subKey1, TSubKey2 subKey2, TSubKey3 subKey3, TSubKey4 subKey4, TSubKey5 subKey5, TSubKey6 subKey6)
        {
            SubKey0 = subKey0;
            SubKey1 = subKey1;
            SubKey2 = subKey2;
            SubKey3 = subKey3;
            SubKey4 = subKey4;
            SubKey5 = subKey5;
            SubKey6 = subKey6;
        }

        public override string ToString()
        {
            return string.Format("[{0}, {1}, {2}, {3}, {4}, {5}, {6}]", SubKey0, SubKey1, SubKey2, SubKey3, SubKey4, SubKey5, SubKey6);
        }
    }
}
